<?php
namespace Admin\Model;

class TraderModel extends \Think\Model
{
	//自动验证
	protected $_validate = array(
		array('id', '/^[1-9]\d*$/', '参数错误', 1,'regex', 2),
		array('avatar_id', '/^[1-9]\d*$/', '参数错误', self::EXISTS_VALIDATE, 'regex', 2),
		array('name', '/^[\w\x{4e00}-\x{9fa5}]{2,}$/u', '请输入正确的名称', 1),
		array('mobile', '/^1\d{10}$/', '请输入正确的手机号', 1),
		array('mobile', '', '手机号已存在', 1, 'unique'),
		array('sex', '0,1,2', '请选择正确的性别', 1, 'in'),
		array('education', '/^\d+$/', '请选择学历', 1, 'regex', 3),
		array('year', '/^\d+$/', '请输入基金管理年限', 1, 'regex', 3),
		array('count', '/^\d+$/', '请输入基金经理管理的基金产品数量', 1, 'regex', 3),
		array('brief', 'require', '请输入简介', 1),
		array('abstract', 'require', '请输入基金经理概要', 1),
		array('birthday', 'require', '请输入基金经理生日', 1),
	);
	
	//自动完成
	protected $_auto = array(
		array('create_time', 'time', 1, 'function'),
		array('update_time', 'time', 3, 'function'),
		array('status', 1, 1, 'string'),
	);
	
	
	/**
	 * 添加基金经理
	 * @author 刘新
	 */
	public function addTrader()
	{
		//数据对象判断
		if($this->create() === false) return array('error' => 1, 'msg' => $this->getError());
		if(I('birthday')) $this->birthday = strtotime(I('birthday'));
		$return = array('error' => 0, 'msg' => '添加成功');
		//添加
		$res = $this->add();
		
		//添加结果判断
		if(!$res) {
			$return['error'] = 1;
			$return['msg'] = $this->getError();
		}
		
		return $return;
	}
	
	/**
	 * 编辑基金经理
	 * @author 刘新
	 */
	public function editTrader()
	{
		//数据对象判断
		if($this->create() === false) return array('error' => 1, 'msg' => $this->getError());
		if(I('birthday')) $this->birthday = strtotime(I('birthday'));
		
		//开启事务
		$this->startTrans();
		$return = array('error' => 0, 'msg' => '编辑成功');
		
		try{
			//保存
			$res = $this->save();
			if(!$res) throw new \Think\Exception($this->getError());
			
			//同步更新Fund模型
			$res = M('Fund')->where(array('trader_id' => I('id'), 'status' => 1))->save(array('trader_name' => I('name')));
			if($res === false) throw new \Think\Exception('基金更新失败');
			
			$this->commit();
		} catch (\Think\Exception $e) {
			$this->rollback();
			$return['error'] = 1;
			$return['msg'] = $e->getMessage();
		}
		return $return;
	}
}